home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8174 / 8174.xpi / chrome / antbar.jar / content / toolbar.js next >
Text File  |  2009-12-30  |  7KB  |  243 lines

  1. // 
  2. //  toolbar.js
  3. //  antbar
  4. //  
  5. //  Created by Zak on 2008-06-11.
  6. //  Contributor Brian King (http://briks.si)
  7. //  Copyright 2008-2009 Ant.com. All rights reserved.
  8. // 
  9.  
  10. var AntBar =
  11. {
  12.     searchType: 'web',
  13.     cleanedSearchBox: false,
  14.  
  15.     /**
  16.      * Entry point of our toolbar, called before the loading of the homepage,
  17.      * but after that the toolbar has been rendered
  18.      */
  19.  
  20.     rankLabels: {
  21.         'statusbar-button':     'ant-video-statusbar-rank',
  22.         'statusbar-separator':  'ant-video-statusbar-rank-separator',
  23.         'toolbar-button':       'antToolBarRankButton',
  24.     },
  25.  
  26.     init: function ()
  27.     {
  28.         var self = AntBar;
  29.         try {
  30.             AntFlvUi.init(document);
  31.             AntDownloadManager.init();
  32.             AntFlvList.init();
  33.             AntRankService.init();
  34.             AntGrabber.init();
  35.             AntPrefs.init();
  36.             AntWatchUrl.init();
  37.             AntBugReport.init();
  38.         }
  39.         catch(e) {
  40.             AntLib.toLog("AntBar.init error : " + e);
  41.         }
  42.     AntRankService.updateVisible();
  43.         this.UninstallObserver.register();
  44.     },
  45.  
  46.     // http://xulsolutions.blogspot.com/2006/07/creating-uninstall-script-for.html
  47.     UninstallObserver : {
  48.         _uninstall : false,
  49.         observe : function(subject, topic, data) {
  50.           if (topic == "em-action-requested") {
  51.             subject.QueryInterface(Components.interfaces.nsIUpdateItem);
  52.         
  53.             if (subject.id == "anttoolbar@ant.com") {
  54.               if (data == "item-uninstalled") {
  55.                 this._uninstall = true;
  56.         AntLib.openURL('http://www.ant.com/video-downloader/uninstalled/');
  57.               } else if (data == "item-cancel-action") {
  58.                 this._uninstall = false;
  59.               }
  60.             }
  61.           } else if (topic == "quit-application-granted") {
  62.             if (this._uninstall) {
  63.               AntPrefs.removeAntUserAgent();
  64.               AntPrefs.cleanEnvironement();
  65.             }
  66.             this.unregister();
  67.           }
  68.         },
  69.         register : function() {
  70.          var observerService =
  71.            Components.classes["@mozilla.org/observer-service;1"].
  72.              getService(Components.interfaces.nsIObserverService);
  73.         
  74.          observerService.addObserver(this, "em-action-requested", false);
  75.          observerService.addObserver(this, "quit-application-granted", false);
  76.         },
  77.         unregister : function() {
  78.           var observerService =
  79.             Components.classes["@mozilla.org/observer-service;1"].
  80.               getService(Components.interfaces.nsIObserverService);
  81.         
  82.           observerService.removeObserver(this,"em-action-requested");
  83.           observerService.removeObserver(this,"quit-application-granted");
  84.         }
  85.     },
  86.  
  87.     /**
  88.      * Handle search using terms typed in the antToolBarSearchBox
  89.      * @param type          The type of search (web,image,video,news,blog)
  90.      */
  91.     doSearch: function ()
  92.     {
  93.         var searchTermsBox = AntLib.ob("antToolBarSearchBox");
  94.         var searchTerms = AntLib.trim(searchTermsBox.value);
  95.  
  96.         if (searchTerms.length == 0 || !this.cleanedSearchBox)
  97.             AntLib.openURL('http://www.ant.com/');
  98.         else
  99.             AntLib.openURL('http://www.ant.com/'+ this.searchType + '/'+AntLib.uriEncode(searchTerms));
  100.     },
  101.  
  102.     /**
  103.      * Called when clicking on the "Support" button
  104.      */
  105.     onSupportButtonClick: function (event)
  106.     {
  107.         AntLib.openURL('http://www.ant.com/toolbar/firefox/help', 1);
  108.         AntLib.ob('antToolBarCombinedButton').style.borderSpacing = 0;
  109.     },
  110.  
  111.     /**
  112.      * Called when clicking on the "Download" button
  113.      */
  114.     onDownloadButtonClick: function (aButton)
  115.     {
  116.       var doc = gBrowser.selectedBrowser.contentDocument;
  117.  
  118.       if (doc.__antflv__ && doc.__antflv__.length != 0)
  119.           AntFlvList.download(doc.__antflv__[0]);
  120.     },
  121.  
  122.     /**
  123.      * Called when clicking on a video in the download list
  124.      */
  125.     onDownloadListClick: function (id)
  126.     {
  127.         var doc = gBrowser.selectedBrowser.contentDocument;
  128.         
  129.         if (doc.__antflv__ && id < doc.__antflv__.length)
  130.         {
  131.             AntFlvList.download(doc.__antflv__[id]);
  132.         }
  133.     },
  134.     
  135.  
  136.     /**
  137.      * Called when clicking on the "open directory" button
  138.      */
  139.     onOpenDirButtonClick: function (event)
  140.     {
  141.       var pref = AntPrefs.getAntBranch();
  142.       if (!pref)
  143.       {
  144.         alert(AntLang.getString("AntDownloadManager.InvalidDestinationFolder"));
  145.         return;
  146.       }
  147.       var dir = pref.getCharPref("flvdir");
  148.       flvDir = AntLib.CCSV("@mozilla.org/file/directory_service;1", "nsIProperties").get("ProfD", AntLib.CI("nsILocalFile"));
  149.       flvDir.initWithPath(dir);
  150.       try
  151.       {
  152.         flvDir.reveal();
  153.       }
  154.       catch (e)
  155.       {
  156.         try
  157.         {
  158.           AntLib.openExternal(flvDir);
  159.         }
  160.         catch (e2)
  161.         {
  162.           AntLib.toLog("reveal error : " + e);
  163.           AntLib.toLog("openExternal error : " + e2);
  164.           alert("This functionnality is not available on your operating system");
  165.         }
  166.       }
  167.     },
  168.  
  169.     /**
  170.       * Called when click on the rank button
  171.       */
  172.     onRankButtonClick: function ()
  173.     {
  174.       AntRankService.goProfil();
  175.     },
  176.  
  177.     /**
  178.      * Called when clicking on the "Player" button
  179.      */
  180.     onPlayerButtonClick: function (event)
  181.     {
  182.         AntLib.openURL("chrome://antbar/content/player/player.xul", true);
  183.     },
  184.  
  185.     /**
  186.      * Clear the searchbox the first time user enter it
  187.      * @param isFocus true if the callback is onFocus otherwise false
  188.      */
  189.     onSearchBoxOnFocus: function (isFocus)
  190.     {
  191.       if (!this.cleanedSearchBox && isFocus)
  192.       {
  193.         AntLib.ob('antToolBarSearchBox').value = '';
  194.         this.cleanedSearchBox = true;
  195.       }
  196.       if (!isFocus && !AntLib.ob('antToolBarSearchBox').value)
  197.       {
  198.         this.cleanedSearchBox = false;
  199.       }
  200.     },
  201.  
  202.     /**
  203.      * Handle keystrokes entered in the searchBox
  204.      * @param event         The event that triggered the call to this function
  205.      */
  206.     onSearchBoxKeyPress: function (event)
  207.     {
  208.         if (event.keyCode == event.DOM_VK_RETURN)
  209.         {
  210.             if (AntLib.ob('antToolBarSearchBox').value != '')
  211.                 this.doSearch();
  212.             else
  213.                 AntLib.openURL('http://www.ant.com/');
  214.         }
  215.     },
  216.     
  217.     /**
  218.      * Open the ant prefs window
  219.      */
  220.     doPrefs: function ()
  221.     {
  222.         var prefSvc = Components.classes["@mozilla.org/preferences-service;1"].
  223.                         getService(Components.interfaces.nsIPrefService);
  224.         var prefServiceCache = prefSvc.getBranch(null);
  225.         var instantApply = prefServiceCache.getBoolPref("browser.preferences.instantApply");
  226.         var flags = "chrome,titlebar,toolbar,centerscreen" + (instantApply ? ",dialog=no" : ",modal");
  227.  
  228.         var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  229.                        .getService(Components.interfaces.nsIWindowMediator);
  230.         var win = wm.getMostRecentWindow("Ant:Preferences");
  231.         if (win) {
  232.            win.focus();
  233.         }
  234.         else
  235.         {
  236.             window.openDialog("chrome://antbar/content/xul/options.xul", 
  237.                               "antpreferences",
  238.                               flags);
  239.         }
  240.     },
  241.  
  242. }
  243.